<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>包装器的再思考</title>
</head>
<body>
<script>

    function foo(){
        console.log(1)
    }

    function decor1(f,ms){
        setTimeout(()=>{
            f.apply(this)
        },ms)
    }

    /*如果我们的包装器使用是想这样传递直接时候的话其实不是真正的包装器*/
    decor1(foo,1000)


    /*
    * 这种写法将包装器和代码的执行进行关注点分离
    * 传入一个函数返回包装后的函数供调用
    *
    * 装饰器不过是在函数的目标函数执行的前后做一些操作，或者使用变量控制我们的目标函数的执行时机
    * 其实执行的还是目标函数 只是有条件的执行
    * */
    function decor2(f,ms){
        return function (){
            setTimeout(()=>{
                f.apply(this,arguments)
            },ms)
        }
    }

    foo = decor2(foo,3000)



</script>
</body>
</html>